package netWorkPrograming.tcp.tcp06;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.Socket;
import java.net.SocketException;

/**
 * @author yangwenqi
 * @decs TODO
 * @date 2025/5/27
 * 需求6：当服务器只是读取消息，客户端写出消息，此时一个服务器可以接收多个客户端（解决方案：线程池，优化需求5）
 * 弊端：无限接入客户端，每接入一个客户端，就需要开辟一条线程来维系之间的通信；
 * 无节制的开辟线程，假设客户端只是进行一个连接，立即销毁线程，必然带来一种浪费！
 * 线程开辟的越多，程序死的越快！
 * 解决方案：线程池
 */
public class ReaderThread implements Runnable {
    private Socket socket;
    public ReaderThread(Socket socket) {
        this.socket = socket;
    }
    @Override
    public void run() {
        try(BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
        ) {
            String s=null;
            while ((s = br.readLine()) != null) {
                if(s.equals("exit")){
                    System.out.println("退出！");
                    break;
                }
                System.out.println(socket.getRemoteSocketAddress()+"\t:"+s);
            }
        }catch (SocketException e){
            System.out.println("我退了！");
        } catch (IOException e) {
            throw new RuntimeException(e);
        }

    }
}

